// import com.alibaba.druid.sql.ast.*;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../../../../ast/SQLOver.h"
#include "../../../../ast/SQLReplaceable.h"
#include "OracleExpr.h"

class OracleAnalytic : virtual public SQLOver, virtual public SQLReplaceable, virtual public OracleExpr
{
public:
  OracleAnalyticWindowing_ptr windowing;

  OracleAnalytic();
  SHAREDOBJECT(OracleAnalytic);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  void accept0(OracleASTVisitor_ptr visitor);

  // @Override
  SQLObject_list_ptr getChildren();

  OracleAnalyticWindowing_ptr getWindowing();

  SQLObject_ptr clone();

  void setWindowing(OracleAnalyticWindowing_ptr x);

  SQLDataType_ptr computeDataType();

  // @Override
  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);
};
